<?php

	require_once('../utils.php');
	require_once('../ORMReporteSubGrupo.php');
	require_once('../Excel.php');

	session_start();

	switch ($_REQUEST['op'])
	{
		// -------------------------------------------------------
		case 'contar':
			if (!$_SESSION['autenticado']) reterr (E_ERROR_PROC, 'Se requiere autenticación previa.');
			// if ($_SESSION['u']['tipo'] != 1) reterr (E_ERROR_PROC, 'Acceso denegado: Debe ser usuario administrativo.');

			$in = validar ($_REQUEST, array
			(
				'subgrupo' => array (
					'obligatorio' => array(false)
				)
			));

			resp('total', ORMReporteSubGrupo::contarItems($in['subgrupo']));
			break;

		// -------------------------------------------------------
		case 'listar':
			if (!$_SESSION['autenticado']) reterr (E_ERROR_PROC, 'Se requiere autenticación previa.');
			// if ($_SESSION['u']['tipo'] != 1) reterr (E_ERROR_PROC, 'Acceso denegado: Debe ser usuario administrativo.');

			$in = validar ($_REQUEST, array
			(
				'offset' => array(
					'obligatorio' => array(true, 'Se requiere el offset a mostrar.'),
					'numerico' => array('Se esperaba un valor numérico')
				),

				'count' => array(
					'obligatorio' => array(true, 'Se requiere el numero de elementos a mostrar.'),
					'numerico' => array('Se esperaba un valor numérico')
				),

				'subgrupo' => array (
					'obligatorio' => array(false)
				)
			));

			resp('datos', ORMReporteSubGrupo::getItems(
				$in['subgrupo']
			));
			break;

		// -------------------------------------------------------
		case 'exportar':
			if (!$_SESSION['autenticado']) reterr (E_ERROR_PROC, 'Se requiere autenticación previa.');
			// if ($_SESSION['u']['tipo'] != 1) reterr (E_ERROR_PROC, 'Acceso denegado: Debe ser usuario administrativo.');

			$in = validar ($_REQUEST, array
			(
				'offset' => array(
					'obligatorio' => array(true, 'Se requiere el offset a mostrar.'),
					'numerico' => array('Se esperaba un valor numérico')
				),

				'count' => array(
					'obligatorio' => array(true, 'Se requiere el numero de elementos a mostrar.'),
					'numerico' => array('Se esperaba un valor numérico')
				),

				'subgrupo' => array (
					'obligatorio' => array(false)
				),

				'full' => array(
					'obligatorio' => array(true, 'Falta parámetro full.'),
					'numerico' => array('Se esperaba un valor numérico')
				)
			));

			if ($in['full'])
			{
				$in['offset'] = 0;
				$in['count'] = $CONFIG['max_export'];
			}

			$data = ORMReporteSubGrupo::getItems(
				$in['subgrupo']
			);

			$fields = array(
				'grupo',
				'presupuesto',
				'transferencia',
				'modificado',
				'usado',
				'disponible',
				'porcentaje_usado',
				'porcentaje_disponible'
			);

			$header = array(
				'Grupo',
				'Presupuesto',
				'Transferencia',
				'Modificado',
				'Usado',
				'Disponible',
				'Porcentaje Usado',
				'Porcentaje Disponible'
			);

			$output = array();

			for ($i = 0; $i < sizeof($data); $i++)
			{
				$row = array();

				for ($j = 0; $j < sizeof($fields); $j++)
				{
					$row[] = $data[$i][$fields[$j]];
				}

				$output[] = $row;
			}

			Excel::Exportar('Reporte de Sub-Grupo', $header, $output);
			exit;

			break;


		// -------------------------------------------------------
		default:
			if (!$_REQUEST['op'])
				reterr (E_ERROR_PROC, 'Falta código de operación (op).');	
			else
				reterr (E_ERROR_PROC, 'Código de operación no reconocido: ' . $_REQUEST['op']);	

			break;
	}

	ret(E_OK);
